#pragma once

#include <queue>
#include <mutex>
#include <condition_variable>

#include "Channel.h"

class TaskQueue
{
public:
  TaskQueue() = default;
  ~TaskQueue() = default;
  void push(Channel* channel);
  bool empty() const;
  Channel* pop();
private:
  std::queue<Channel*> m_queue;
  std::condition_variable m_cv;
  mutable std::mutex m_mutex;
};